package siestageek.swing.component;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.GridLayout;
import java.awt.FlowLayout;
import javax.swing.JButton;

// 배치 관리자 Layout Manager
// JFrame, JDialog, JPanel 같은 컨테이너에
// 하위 컴퍼넌트(button, label등)를 배치하려면
// LayoutManager를 이용해야 함
// LayoutManager를 컨테이너에 추가하려면
// setLayout 메서드를 이용
// 또한, LayoutManager에게 컴퍼넌트의 적절한 
// 크기를 알려주려면 setPreferredSize 메서드를 사용
// button.setPreferredSize(
//								new Dimension( 150,150 ) );

//  LayoutManager 는 인터페이스임
// 하지만, 특별한 경우를 제외하고
// 이것을 구현할 필요는 없음
// LayoutManager <- FlowLayout, BorderLayout,
//              CardLayout, GridLayout, GridBagLayout
//				 BoxLayout, SpringLayout

// BoxLayout, SpringLayout 등은 
//                   javax.swing 패키지에 포함됨

// FlowLayout
// 컴퍼넌트들을 수평방향으로 배치함
// 기본 흐름방향은 왼쪽에서 오른쪽임
// 먼저 추가한 컴퍼넌트는 나중에 추가한 
// 컴퍼넌트의 왼쪽에 놓임
// 만일, 배치할 공간이 없으면 다음 줄에 놓음

// 수평 행 정렬은 LEFT, RIGHT, CENTER,
// LEADING, TRAILING등이 있음
// hgap, vgap은 각 컴퍼넌트들간의 수평 간격,
// 수직 간격을 정의한 것임

public class J12_FlowLayoutFrame extends JFrame {

	private JPanel contentPane;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					J12_FlowLayoutFrame frame = new J12_FlowLayoutFrame();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public J12_FlowLayoutFrame() {
		setTitle("Flow Layout");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(new FlowLayout(FlowLayout.CENTER, 40, 40));
		
		JButton btnNewButton = new JButton("New button");
		contentPane.add(btnNewButton);
		
		JButton btnNewButton_1 = new JButton("New button");
		contentPane.add(btnNewButton_1);
		
		JButton btnNewButton_2 = new JButton("New button");
		contentPane.add(btnNewButton_2);
		
		JButton btnNewButton_3 = new JButton("New button");
		contentPane.add(btnNewButton_3);
		
		JButton btnNewButton_4 = new JButton("New button");
		contentPane.add(btnNewButton_4);
		
		JButton btnNewButton_5 = new JButton("New button");
		contentPane.add(btnNewButton_5);
		
		JButton btnNewButton_6 = new JButton("New button");
		contentPane.add(btnNewButton_6);
		
		JButton btnNewButton_7 = new JButton("New button");
		contentPane.add(btnNewButton_7);
		
		JButton btnNewButton_8 = new JButton("New button");
		contentPane.add(btnNewButton_8);
		
		JButton btnNewButton_9 = new JButton("New button");
		contentPane.add(btnNewButton_9);
	}

}
